package com.sumainfor.common.util;
import com.alibaba.fastjson.JSON;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.io.IOException;
import java.security.MessageDigest;
import java.time.*;
import java.util.HashMap;
import java.util.Map;
import java.util.TreeMap;

/**58同城房源工具类
 * @ClassName: InteSameCityUtil
 * @author xzzhao
 * @date 2019年3月11日
 */
public class InteSameCityUtil {
    static Logger  log = LoggerFactory.getLogger(InteSameCityUtil.class);// 日志
    /**
     * 转换出租类型
     */
    public static  String ifOperaTypeTorentType(String params){
        String result="";
        //58    rentType    1.整套出租 2.单间出租
        //唐巢 ifOperaType    0 合租（单间出租）1 整租
        if (params.equals("0")){
            result="2";
        }else if(params.equals("1")){
            result="1";
        }
        return result;
    }

    /**
     *区分主卧和次卧
     * @param cod
     * @return
     */
    public static String checkBedRoomType(String cod){
        String result="";
        //58    bedRoomType   31.主卧 32.次卧
        //唐巢  cod  A B C D Z  //A房间为主卧 其他房间为次卧
        if (cod.equals("A")){
            result="31";
        }else {
            result="32";
        }
        return result;
    }
    /**
     * 区别房间的朝向
     */
    public static String checkFaceToType(String Towards){
        String result="";
        //58    faceToType   60:东 61:南 62:西63:北
        //唐巢  IfTowards  东 西 南 北
        if (Towards.equals("东")){
            result="60";
        }else if (Towards.equals("西")){
            result="61";
        }else if (Towards.equals("南")){
            result="62";
        }else if (Towards.equals("北")){
            result="63";
        }
        return result;
    }
    /**
     *获取签名
     */
    public static String getSignature () {
        //获取时间戳 unix
        String timeSign=InteSameCityUtil.getTimeSign();
        System.out.println("时间getSignature："+System.currentTimeMillis());
        //企业授权码
        String clientSecret=InteSameCityConfig.CLIENT_SECRET;
        //接口请求地址
        String host="hugopenapi.58.com";
        return clientSecret+host+timeSign;
    }
    /**
     *获取时间戳
     */
    public static String getTimeSign () {
        ZoneOffset zoneOffset=ZoneOffset.ofHours(8);
        //初始化LocalDateTime对象
        LocalDateTime localDateTime=LocalDateTime.now();
        //获取LocalDateTime对象对应时区的Unix时间戳
        System.out.println(localDateTime.toEpochSecond(zoneOffset));

        return  String.valueOf(localDateTime.toEpochSecond(zoneOffset))+"000";
    }
    /**
     * @Comment SHA1实现
     * @Author Ron
     * @Date 2017年9月13日 下午3:30:36
     * @return
     */
    public static String shaEncode(String inStr)  {
        MessageDigest sha = null;
        try {
            sha = MessageDigest.getInstance("SHA");
        } catch (Exception e) {
            System.out.println(e.toString());
            e.printStackTrace();
            return "";
        }
        StringBuffer hexValue = new StringBuffer();
        try{
            byte[] byteArray = inStr.getBytes("UTF-8");
            byte[] md5Bytes = sha.digest(byteArray);
            for (int i = 0; i < md5Bytes.length; i++) {
                int val = ((int) md5Bytes[i]) & 0xff;
                if (val < 16) {
                    hexValue.append("0");
                }
                hexValue.append(Integer.toHexString(val));
            }
        }catch (Exception e){
            log.info("异常："+e);
        }
        return hexValue.toString();
    }
    /**
     *分散式 新加房源
     * @return
     */
    public static Map<String,Object> api_house_add(Map<String,String> params) {
        // 装配请求参数
        String url=InteSameCityConfig.HOST_TEST+"/house/api_house_add";
        //发送请求
        Map<String,Object> map= null;
        try {
            map=(Map<String,Object>)JSON.parse(HttpUtilBee.postResponse(url,params));
        } catch (IOException e) {
            e.printStackTrace();
        }
        log.info(map.toString());
        return map;
    }
    /**
     *分散式 修改房源
     * @return
     */
    public static Map<String,Object> api_house_status_modify(Map<String,String> params) {
        // 装配请求参数
        String url=InteSameCityConfig.HOST_TEST+"/house/api_house_status_modify";
        //发送请求
        Map<String,Object> map= null;
        try {
            map=(Map<String,Object>)JSON.parse(HttpUtilBee.postResponse(url,params));
        } catch (IOException e) {
            e.printStackTrace();
        }
        log.info(map.toString());
        return map;
    }
    /**
     *分散式 删除接口
     * @return
     */
    public static Map<String,Object> api_house_del(Map<String,String> params) {
        // 装配请求参数
        String url=InteSameCityConfig.HOST_TEST+"/house/api_house_del";
        //发送请求
        Map<String,Object> map= null;
        try {
            map=(Map<String,Object>)JSON.parse(HttpUtilBee.postResponse(url,params));
        } catch (IOException e) {
            e.printStackTrace();
        }
        log.info(map.toString());
        return map;
    }
    /**
     *4.修改房源接口（修改后直接转为已发布状态）
     * @return
     */
    public static Map<String,Object> api_house_modify(Map<String,String> params) {
        // 装配请求参数
        String url=InteSameCityConfig.HOST_TEST+"/house/api_house_modify";
        //发送请求
        Map<String,Object> map= null;
        try {
            map=(Map<String,Object>)JSON.parse(HttpUtilBee.postResponse(url,params));
        } catch (IOException e) {
            e.printStackTrace();
        }
        log.info(map.toString());
        return map;
    }
    /**
     *4.房源信息 获取接口 合作公寓获取已经推送给58的房源基本信息
     * @return
     */
    public static Map<String,Object> api_house_info_get(Map<String,String> params) {
        // 装配请求参数
        String url=InteSameCityConfig.HOST_TEST+"/house/api_house_info_get";
        //发送请求
        Map<String,Object> map= null;
        try {
            map=(Map<String,Object>)JSON.parse(HttpUtilBee.postResponse(url,params));
        } catch (IOException e) {
            e.printStackTrace();
        }
        log.info(map.toString());
        return map;
    }
    /**
     *预约信息获取接口 合作公寓的预约信息
     * @return
     */
    public static Map<String,Object> api_order_info_get(Map<String,String> params) {
        // 装配请求参数
        String url=InteSameCityConfig.HOST_TEST+"/order/api_order_info_get";
        //发送请求
        Map<String,Object> map= null;
        try {
            map=(Map<String,Object>)JSON.parse(HttpUtilBee.postResponse(url,params));
        } catch (IOException e) {
            e.printStackTrace();
        }
        log.info(map.toString());
        return map;
    }
    /**
     *商业信息获取接口
     * @return
     */
    public static Map<String,Object> api_get_biz_info(Map<String,String> params) {
        // 装配请求参数
        String url=InteSameCityConfig.HOST_TEST+"/biz/api_get_biz_info";
        //发送请求
        Map<String,Object> map= null;
        try {
            map=(Map<String,Object>)JSON.parse(HttpUtilBee.postResponse(url,params));
        } catch (IOException e) {
            e.printStackTrace();
        }
        log.info(map.toString());
        return map;
    }
    /**
     *数据统计获取接口
     * @return
     */
    public static Map<String,Object> api_get_biz_statistics(Map<String,String> params) {
        // 装配请求参数
        String url=InteSameCityConfig.HOST_TEST+"/biz/api_get_biz_statistics";
        //发送请求
        Map<String,Object> map= null;
        try {
            map=(Map<String,Object>)JSON.parse(HttpUtilBee.postResponse(url,params));
        } catch (IOException e) {
            e.printStackTrace();
        }
        log.info(map.toString());
        return map;
    }
    /**
     *电话列表获取接口
     * @return
     */
    public static Map<String,Object> api_biz_call_list(Map<String,String> params) {
        // 装配请求参数
        String url=InteSameCityConfig.HOST_TEST+"/biz/api_biz_call_list";
        //发送请求
        Map<String,Object> map= null;
        try {
            map=(Map<String,Object>)JSON.parse(HttpUtilBee.postResponse(url,params));
        } catch (IOException e) {
            e.printStackTrace();
        }
        log.info(map.toString());
        return map;
    }
    /**58集中式房源的api方法**/
    /**
     *房间添加接口（集中式房源）
     * @return
     */
    public static Map<String,Object> api_apartmentroom_add(Map<String,String> params) {
        // 装配请求参数
        String url=InteSameCityConfig.HOST_TEST+"/apartment/api_apartmentroom_add";
        //发送请求
        Map<String,Object> map= null;
        try {
            map=(Map<String,Object>)JSON.parse(HttpUtilBee.postResponse(url,params));
        } catch (IOException e) {
            e.printStackTrace();
        }
        log.info(map.toString());
        return map;
    }
    /**
     *房源信息获取（集中式房源）
     * @return
     */
    public static Map<String,Object> Api_house_info_get(Map<String,String> params) {
        // 装配请求参数
        String url=InteSameCityConfig.HOST_TEST+"/house/Api_house_info_get";
        //发送请求
        Map<String,Object> map= null;
        try {
            map=(Map<String,Object>)JSON.parse(HttpUtilBee.postResponse(url,params));
        } catch (IOException e) {
            e.printStackTrace();
        }
        log.info(map.toString());
        return map;
    }
    /**
     *房间添加接口（集中式房源）
     * @return
     */
    public static Map<String,Object> api_apartmentroom_update(Map<String,String> params) {
        // 装配请求参数
        String url=InteSameCityConfig.HOST_TEST+"/apartment/api_apartmentroom_update";
        //发送请求
        Map<String,Object> map= null;
        try {
            map=(Map<String,Object>)JSON.parse(HttpUtilBee.postResponse(url,params));
        } catch (IOException e) {
            e.printStackTrace();
        }
        log.info(map.toString());
        return map;
    }
    //
    public static void main(String[] args) {
//        //组装请求接口的map类型参数
//        Map<String,Object> dataMap=new HashMap<String,Object>();
//        dataMap.put("appId",InteSameCityConfig.APPID_TEST);
//        dataMap.put("outHouseId","112121231231231");//合作公寓系统id
//        // dataMap.put("videoUrl","1");//合作公寓系统的房屋视频url (N)
//        dataMap.put("picUrlList","");//合作公寓系统的房屋图片url信息[{"detailNum":"1","picDesc":"客厅","picUrl":"http://{gongyue}"}]
//        dataMap.put("rentType","1");//1.整套出租 2.单间出租
//        dataMap.put("bedRoomNum","2");//房屋户型-室例如（2室）：2
//        dataMap.put("livingRoomNum","1");//房屋户型-厅例如（1室）：1  可以为0
//        dataMap.put("toiletNum","1");//房屋户型-卫 例如（1卫）：1  可以为0
//        dataMap.put("rentRoomArea","110");//对于单间出租的，为出租间面积 对于整租的为房屋总面积 对于整租的为房屋总面积 例如：110
//        dataMap.put("bedRoomType","31");//出租屋类型，枚举值。 出租屋类型，枚举值。
//        dataMap.put("faceToType","60");//faceToType 60:东 61:南 62:西63:北
//        dataMap.put("totalFloor","18");//totalFloor
//        dataMap.put("houseFloor","5");//房间所在楼层
//        // dataMap.put("featureTag","10");//房间所在楼层 (N)
//        dataMap.put("detailPoint","71");//房屋配置，枚举值，可多选
////        dataMap.put("servicePoint","91");//公寓配套服务，枚举值，可多选 (N)
//        dataMap.put("monthRent","2100");//月租金，以元为单位
//        dataMap.put("rentStartDate","2015-12-31");//起租时间，格式yyyy-MM-dd
//        dataMap.put("shortRent","0");//是否支持短租，枚举值0:不支持 1支持 (N)
////        dataMap.put("shotRentCycle","10");//选择短租模式，此字段必填 (N)
////        dataMap.put("shotRentPrice","10");//短租价格 (N)
//        dataMap.put("cityName","北京");//所在城市 上海
//        dataMap.put("countyName","朝阳区");//所在区县 浦东
//        dataMap.put("areaName","甜水园");//房屋所在商圈 高行
//        dataMap.put("districtName","成熟小区");//districtName 新高苑
//        dataMap.put("street","距14号线朝阳公园约706米");//房屋所在小区详细地址
//        dataMap.put("address","8楼102");//房屋所在小区详细地址
//        dataMap.put("houseDesc","唐巢高科坊集中式公寓 位于高科东路1870号\n" +
//                "\n" +
//                "独立一居室（独立厨房、卫生间）高端大气上档次\n" +
//                "\n" +
//                "一、配套成熟——门口有多家餐饮连锁店，周边超市等生活配套设施齐全，能够充分满足您一站式购物需要，是您理想的居家场所。\n" +
//                "\n" +
//                "二、交通便利——门店公交众多，交通四通八达，您想到上海的任何一个角落都是相当方便。\n" +
//                "\n" +
//                "三、品质精装——给所有住户匹配的空间尺度、品牌家具组合、简约宜家风设计。实现简约、自然、有设计感的宜居空间。\n" +
//                "\n" +
//                "四、多样房型——户型设计紧凑,多功能馈赠空间；在有限空间实现了居住梦想的放大。每间房间阳光无遮挡。视野开阔，让您的居家生活丰富多彩。\n" +
//                "\n" +
//                "五、专业管理——24小时全方位的监控系统、出入口电子门禁系统，高安全保障，使您住的放心！\n" +
//                "\n" +
//                "六、增值服务——每日都会有公寓管家值班，随时为您服务（如代收快递等），并且还有定期举行公寓活动，享受真正的“喜欢你的生活”。\n" +
//                "\n" +
//                "七、专业保洁——每天都会有保洁阿姨打扫公共走廊的卫生，在公寓多个角落都有摆放的环保大垃圾桶，省了您到外面丢垃圾的烦恼，为能保持您室内空气清新多一份保证。\n" +
//                "\n" +
//                "欢迎有意向的小伙伴前来咨询~");//房屋所在小区详细地址
//        dataMap.put("xCoord","116.48056");//房屋所在小区详细地址
//        dataMap.put("yCoord","39.930321");//房屋所在小区详细地址
//        dataMap.put("agentPhone","15703928852");//房屋所在小区详细地址
//        dataMap.put("agentName","10");//房屋所在小区详细地址
////        dataMap.put("paymentMode","10");//支付方式 (N)
////        dataMap.put("rentRequire","10");//入住要求 (N)
//        dataMap.put("hasLift ","1");//电梯：1 无电梯 2 有电梯
//        //请求体
//        Map<String,String> map=new HashMap<String,String>();
//        //组装请求接口的map类型参数 转成json 然后生成加密字符串
//        String rsaString=ThirdRSACoder.encrypt(JSON.toJSONString(dataMap),InteSameCityConfig.PRIVATE_KEY);
//        String rsaString2=ThirdRSACoder.decrypt(rsaString,InteSameCityConfig.PUBLIIC_KEY);
//        System.out.println("rsaString:"+rsaString);
//        System.out.println("rsaString2:"+rsaString2);
//        map.put("data",rsaString);
//        System.out.println("返回值:"+ InteSameCityUtil.api_house_add(map));
        /*房源信息获取*/
        //组装请求接口的map类型参数
//        Map<String,Object> dataMap=new HashMap<String,Object>();
//        dataMap.put("appId",InteSameCityConfig.APPID_TEST);
////        String [] arr=new String []{"201906250000002"};
//        dataMap.put("houseId","201906280000004");
//        dataMap.put("memo","测试删除");
//        //请求体
//        Map<String,String> map=new HashMap<String,String>();
//        //组装请求接口的map类型参数 转成json 然后生成加密字符串
//        String rsaString=ThirdRSACoder.encrypt(JSON.toJSONString(dataMap),InteSameCityConfig.PRIVATE_KEY);
//        map.put("data",rsaString);
//        System.out.println(InteSameCityUtil.api_house_del(map));
        /*预约信息获取*/
//                Map<String,Object> dataMap=new HashMap<String,Object>();
//        dataMap.put("appId",InteSameCityConfig.APPID_TEST);
//
//        String [] arr=new String []{"141"};
//        dataMap.put("agentName",arr);
////        dataMap.put("houseId",arr);
////        dataMap.put("limit","10");
////        dataMap.put("page","1");
//
//        //请求体
//        Map<String,String> map=new HashMap<String,String>();
//        //组装请求接口的map类型参数 转成json 然后生成加密字符串
//        String rsaString=ThirdRSACoder.encrypt(JSON.toJSONString(dataMap),InteSameCityConfig.PRIVATE_KEY);
//        map.put("data",rsaString);
//        System.out.println(InteSameCityUtil.api_order_info_get(map));
        //如果58被选中就让房源在58那里下架s
//        Map<String,Object> dataMap=new HashMap<String,Object>();
//        dataMap.put("appId",InteSameCityConfig.APPID_TEST);
//        String [] arr=new String []{"201906280000003"};
//        dataMap.put("houseId",arr);//内部房源在58平台的唯一标识
//        dataMap.put("status","4000");//房屋修改状态，枚举值 3000 上线 4000:下线 5000:已出租
//        //请求体
//        Map<String,String> maphead=new HashMap<String,String>();
//        //组装请求接口的map类型参数 转成json 然后生成加密字符串
//        String rsaString=ThirdRSACoder.encrypt(JSON.toJSONString(dataMap),InteSameCityConfig.PRIVATE_KEY);
//        log.info("rsaString:"+rsaString);
//        log.info("rsaString2:"+ThirdRSACoder.decrypt(rsaString,InteSameCityConfig.PUBLIIC_KEY));
//        maphead.put("data",rsaString);
//
        // 新增房间（集中式房源）
//        Map<String,Object> dataMap=new HashMap<String,Object>();
//        dataMap.put("appId",InteSameCityConfig.APPID_TEST);
//        System.out.println("门店编号33进制:"+Long.toString(new Long("1073042101328994304"), 33));
//        dataMap.put("apartmentId",Long.toString(new Long("1073042101328994304"), 33));//门店编号
//        dataMap.put("houseId","201812130004528");//房型编号
//        dataMap.put("floorNum","10");//房间所在楼层（小于门店总楼层数）
//        dataMap.put("roomNum","103");//房间所在楼层（小于门店总楼层数）
//        dataMap.put("roomStatus","3000");//房间所在楼层（小于门店总楼层数）
//        //请求体
//        Map<String,String> map=new HashMap<String,String>();
//        //组装请求接口的map类型参数 转成json 然后生成加密字符串
//        String rsaString=ThirdRSACoder.encrypt(JSON.toJSONString(dataMap),InteSameCityConfig.PRIVATE_KEY);
//        map.put("data",rsaString);
//        log.info("rsaString:"+rsaString);
//        log.info("rsaString2:"+ThirdRSACoder.decrypt(rsaString,InteSameCityConfig.PUBLIIC_KEY));
//        System.out.println(InteSameCityUtil.api_apartmentroom_add(map));
        // 房源信息获取
//        Map<String,Object> dataMap=new HashMap<String,Object>();
//        dataMap.put("appId",InteSameCityConfig.APPID_TEST);
//        String [] arr=new String[]{"201906030019416","201812130004528","201812130004759","201812130004867"};
//        dataMap.put("houseId",arr);//房型编号
//        //请求体
//        Map<String,String> map=new HashMap<String,String>();
//        //组装请求接口的map类型参数 转成json 然后生成加密字符串
//        String rsaString=ThirdRSACoder.encrypt(JSON.toJSONString(dataMap),InteSameCityConfig.PRIVATE_KEY);
//        map.put("data",rsaString);
//        log.info("rsaString:"+rsaString);
//        log.info("rsaString2:"+ThirdRSACoder.decrypt(rsaString,InteSameCityConfig.PUBLIIC_KEY));
//        System.out.println(InteSameCityUtil.Api_house_info_get(map));
    }
}